import * as classifyApi from '../../api/classify';

export default {
  namespaced: true,
  state() {
    return {
      // 首页全部分类信息
      classifyInfo: {},
      // 获取轮播图
      slideshow: {},
      // 获取人气推荐列表
      recommended: {},
      // 获取新鲜好物
      good: [],
      // 获取热门品牌
      brand: {},
      // 获取首页商品详情
      goodsDetails: {},
      // 获取作新专题
      subject: {},
    };
  },
  mutations: {
    // 首页全部分类信息
    SET_CLASSIFY_INFO(state, newValue) {
      state.classifyInfo = newValue;
    },
    // 获取轮播图
    SET_SLIDESHOW(state, newValue) {
      state.slideshow = newValue;
    },
    // 获取人气推荐
    SET_RECOMMENDED(state, newValue) {
      state.recommended = newValue;
    },
    // 获取新鲜好物
    SET_GOOD(state, newValue) {
      state.good = newValue;
    },
    // 获取热门品牌
    SET_BRAND(state, newValue) {
      state.brand = newValue;
    },
    // 获取首页商品详情
    SET_GOODS_DETAILS(state, newValue) {
      state.goodsDetails = newValue;
    },
    // 获取作新专题
    SET_SUBJECT(state, newValue) {
      state.subject = newValue;
    },
  },
  actions: {
    // 首页全部分类信息
    async updateClassifyInfo({ commit }) {
      const pageRes = {
        success: false,
        msg: '',
      };
      await classifyApi.getClassifyInfo()
        .then((res) => {
          pageRes.success = true;
          pageRes.msg = res.msg;
          commit('SET_CLASSIFY_INFO', res.result);
        })
        .catch((err) => {
          pageRes.success = false;
          pageRes.msg = err.message;
        });
      return pageRes;
    },
    // 获取轮播图
    async updateSlideshow({ commit }, params) {
      const pageRes = {
        success: false,
        msg: '',
      };
      await classifyApi.getSlideshow(params)
        .then((res) => {
          pageRes.success = true;
          pageRes.msg = res.msg;
          commit('SET_SLIDESHOW', res.result);
        })
        .catch((err) => {
          pageRes.success = false;
          pageRes.msg = err.message;
        });
      return pageRes;
    },
    // 获取人气推荐
    async updateRecommended({ commit }) {
      const pageRes = {
        success: false,
        msg: '',
      };
      await classifyApi.getRecommended()
        .then((res) => {
          pageRes.success = true;
          pageRes.msg = res.msg;
          commit('SET_RECOMMENDED', res.result);
        })
        .catch((err) => {
          pageRes.success = false;
          pageRes.msg = err.message;
        });
      return pageRes;
    },
    // 获取新鲜好物
    async updateGood({ commit }) {
      const pageRes = {
        success: false,
        msg: '',
      };
      await classifyApi.getGood()
        .then((res) => {
          pageRes.success = true;
          pageRes.msg = res.msg;
          commit('SET_GOOD', res.result);
        })
        .catch((err) => {
          pageRes.success = false;
          pageRes.msg = err.message;
        });
      return pageRes;
    },
    // 获取热门品牌
    async updateBrand({ commit }, params) {
      const pageRes = {
        success: false,
        msg: '',
      };
      await classifyApi.getBrand(params)
        .then((res) => {
          pageRes.success = true;
          pageRes.msg = res.msg;
          commit('SET_BRAND', res.result);
        })
        .catch((err) => {
          pageRes.success = false;
          pageRes.msg = err.message;
        });
      return pageRes;
    },
    // 获取首页商品详情
    async updateGoodsDetails({ commit }) {
      const pageRes = {
        success: false,
        msg: '',
      };
      await classifyApi.getGoodDetails()
        .then((res) => {
          pageRes.success = true;
          pageRes.msg = res.msg;
          commit('SET_GOODS_DETAILS', res.result);
        })
        .catch((err) => {
          pageRes.success = false;
          pageRes.msg = err.message;
        });
      return pageRes;
    },
    // 获取作新专题
    async updateSubject({ commit }) {
      const pageRes = {
        success: false,
        msg: '',
      };
      await classifyApi.getSubject()
        .then((res) => {
          pageRes.success = true;
          pageRes.msg = res.msg;
          commit('SET_SUBJECT', res.result);
        })
        .catch((err) => {
          pageRes.success = false;
          pageRes.msg = err.message;
        });
      return pageRes;
    },
  },
};
